#ifndef IPLUGIN_H
#define IPLUGIN_H

#include <QtCore>

class QWidget;

using mainwindowCallBack = std::function<void(const QString& info)>;

class IPlugin
{

public:
virtual ~IPlugin() = default;

    // 生命周期管理
    virtual void initialize(mainwindowCallBack = nullptr) = 0;    // 初始化资源
    virtual void shutdown() = 0;       // 清理资源

        // 功能接口
    virtual QString name() const = 0; // 插件标识
    virtual QWidget* createUI() = 0;   // 创建UI组件

};

#define PluginInterface_iid "com.deam.IPlugin"
Q_DECLARE_INTERFACE(IPlugin, PluginInterface_iid)

#endif // IPLUGIN_H
